﻿// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

namespace System.Drawing.Imaging;

public sealed class Encoder
{
    public static readonly Encoder Compression = new(new Guid(unchecked((int)0xe09d739d), unchecked((short)0xccd4), unchecked(0x44ee), [0x8e, 0xba, 0x3f, 0xbf, 0x8b, 0xe4, 0xfc, 0x58]));
    public static readonly Encoder ColorDepth = new(new Guid(0x66087055, unchecked((short)0xad66), unchecked(0x4c7c), [0x9a, 0x18, 0x38, 0xa2, 0x31, 0x0b, 0x83, 0x37]));
    public static readonly Encoder ScanMethod = new(new Guid(0x3a4e2661, 0x3109, 0x4e56, [0x85, 0x36, 0x42, 0xc1, 0x56, 0xe7, 0xdc, 0xfa]));
    public static readonly Encoder Version = new(new Guid(0x24d18c76, unchecked((short)0x814a), unchecked(0x41a4), [0xbf, 0x53, 0x1c, 0x21, 0x9c, 0xcc, 0xf7, 0x97]));
    public static readonly Encoder RenderMethod = new(new Guid(0x6d42c53a, 0x229a, 0x4825, [0x8b, 0xb7, 0x5c, 0x99, 0xe2, 0xb9, 0xa8, 0xb8]));
    public static readonly Encoder Quality = new(new Guid(0x1d5be4b5, unchecked((short)0xfa4a), unchecked(0x452d), [0x9c, 0xdd, 0x5d, 0xb3, 0x51, 0x05, 0xe7, 0xeb]));
    public static readonly Encoder Transformation = new(new Guid(unchecked((int)0x8d0eb2d1), unchecked((short)0xa58e), unchecked(0x4ea8), [0xaa, 0x14, 0x10, 0x80, 0x74, 0xb7, 0xb6, 0xf9]));
    public static readonly Encoder LuminanceTable = new(new Guid(unchecked((int)0xedb33bce), unchecked(0x0266), unchecked(0x4a77), [0xb9, 0x04, 0x27, 0x21, 0x60, 0x99, 0xe7, 0x17]));
    public static readonly Encoder ChrominanceTable = new(new Guid(unchecked((int)0xf2e455dc), unchecked(0x09b3), unchecked(0x4316), [0x82, 0x60, 0x67, 0x6a, 0xda, 0x32, 0x48, 0x1c]));
    public static readonly Encoder SaveFlag = new(new Guid(unchecked(0x292266fc), unchecked((short)0xac40), unchecked(0x47bf), [0x8c, 0xfc, 0xa8, 0x5b, 0x89, 0xa6, 0x55, 0xde]));

    /// <summary>
    ///  An <see cref="Encoder" /> object that is initialized with the globally unique identifier for the color space category.
    /// </summary>
    public static readonly Encoder ColorSpace = new(new Guid(unchecked((int)0xae7a62a0), unchecked((short)0xee2c), unchecked(0x49d8), [0x9d, 0x07, 0x1b, 0xa8, 0xa9, 0x27, 0x59, 0x6e]));

    /// <summary>
    ///  An <see cref="Encoder" /> object that is initialized with the globally unique identifier for the image items category.
    /// </summary>
    public static readonly Encoder ImageItems = new(new Guid(unchecked(0x63875e13), unchecked(0x1f1d), unchecked(0x45ab), [0x91, 0x95, 0xa2, 0x9b, 0x60, 0x66, 0xa6, 0x50]));

    /// <summary>
    ///  An <see cref="Encoder" /> object that is initialized with the globally unique identifier for the save as CMYK category.
    /// </summary>
    public static readonly Encoder SaveAsCmyk = new(new Guid(unchecked((int)0xa219bbc9), unchecked(0x0a9d), unchecked(0x4005), [0xa3, 0xee, 0x3a, 0x42, 0x1b, 0x8b, 0xb0, 0x6c]));

    public Encoder(Guid guid) => Guid = guid;

    public Guid Guid { get; }
}
